package com.bdth.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;


public final class SingletonUtil {

	private static Map<String, String> proMap = new HashMap<String, String>();

	//定义一个静态私有变量(不初始化，不使用final关键字，使用volatile保证了多线程访问时instance变量的可见性，避免了instance初始化时其他变量属性还没赋值完时，被另外线程调用)
	private static volatile SingletonUtil inst;

	private SingletonUtil() {

	}

	public static SingletonUtil getInstance() {
		// 对象实例化时与否判断（不使用同步代码块，instance不等于null时，直接返回对象，提高运行效率）
		if (inst == null) {
			//同步代码块（对象未初始化时，使用同步代码块，保证多线程访问时对象在第一次创建后，不再重复被创建）
			synchronized (SingletonUtil.class) {
				//未初始化，则初始inst变量
				if (inst == null) {
					inst = new SingletonUtil();
				}
			}
		}
		return inst;
	}


	public void readConfig() {
		Properties pro = new Properties();
		InputStream in = null;
		try {
			in = SingletonUtil.class.getClassLoader()
					.getResourceAsStream("properties/wcfUrl.properties");
			pro.load(in);
			Enumeration e = pro.propertyNames();
			while (e.hasMoreElements()) {
				String key = (String) e.nextElement();
				String value = (String) pro.get(key);
				proMap.put(key, value);

			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				in.close();//千万别忘了关闭资源哦！
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}


	public static Map<String, String> getProMap() {
		return proMap;
	}

}
